Docker Networking হল Docker কন্টেইনারগুলোর মধ্যে এবং কন্টেইনার ও হোস্টের মধ্যে যোগাযোগের ব্যবস্থা। Docker Networking বিভিন্ন নেটওয়ার্ক ড্রাইভার ব্যবহার করে কন্টেইনারগুলোর মধ্যে সংযোগ স্থাপন করতে সহায়তা করে, যা বিভিন্ন কনফিগারেশন এবং অ্যাপ্লিকেশন আর্কিটেকচারের জন্য অত্যন্ত গুরুত্বপূর্ণ। নিচে Docker Networking এর বিভিন্ন দিক এবং এর ব্যবহারের পদ্ধতি আলোচনা করা হলো।
Bridge Network:
Host Network:
Overlay Network:
Macvlan Network:
নেটওয়ার্ক তৈরি করা:
docker network create my-network
নেটওয়ার্কের তালিকা দেখা:
docker network ls
নেটওয়ার্কের তথ্য দেখা:
docker network inspect my-network
নেটওয়ার্ক মুছা:
docker network rm my-network
Docker Networking হল কন্টেইনারগুলোর মধ্যে এবং কন্টেইনার ও হোস্টের মধ্যে যোগাযোগের একটি গুরুত্বপূর্ণ উপাদান। বিভিন্ন ধরনের নেটওয়ার্ক ড্রাইভার যেমন Bridge, Host, Overlay এবং Macvlan ব্যবহার করে আপনি কন্টেইনারের যোগাযোগ কনফিগার করতে পারেন। Docker Networking ব্যবস্থাপনা আপনাকে কন্টেইনার ভিত্তিক অ্যাপ্লিকেশনগুলোর স্থিতিশীলতা এবং কার্যকারিতা উন্নত করতে সাহায্য করে।
Docker Networking হল Docker কনটেইনারগুলির মধ্যে এবং কনটেইনার থেকে বাহ্যিক নেটওয়ার্কের সাথে যোগাযোগ পরিচালনার জন্য ব্যবহৃত প্রযুক্তি। Docker Networking-এর মাধ্যমে কনটেইনারগুলো বিভিন্নভাবে সংযুক্ত হতে পারে, যেমন স্থানীয়, প্রাইভেট, বা পাবলিক নেটওয়ার্কে। এটি কনটেইনারের মধ্যে ডেটা আদান-প্রদানের সুবিধা দেয় এবং বিভিন্ন পরিষেবা পরিচালনা করতে সহায়ক হয়।
Docker Networking-এর কয়েকটি প্রধান প্রকার রয়েছে:
docker network create my-bridge-network
docker run --network my-bridge-network --name my-container my-image
docker run --network host my-image
docker network create --driver overlay my-overlay-network
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my-macvlan-network
docker run --network none my-image
Docker Networking বিভিন্ন প্রকারের নেটওয়ার্কিং সমাধান প্রদান করে, যা কনটেইনারগুলির মধ্যে এবং বাহ্যিক নেটওয়ার্কের সাথে যোগাযোগ সক্ষম করে। বিভিন্ন নেটওয়ার্ক যেমন Bridge, Host, Overlay, Macvlan, এবং None বিভিন্ন উদ্দেশ্যে ব্যবহৃত হয়। Docker Networking ব্যবহারের মাধ্যমে কনটেইনারের মধ্যে ডেটা আদান-প্রদান এবং সেবা সংযোগ নিশ্চিত করা যায়, যা উন্নয়ন এবং উৎপাদন পরিবেশে গুরুত্বপূর্ণ।
Docker-এ নেটওয়ার্কিং কন্টেইনারগুলোর মধ্যে এবং কন্টেইনার ও হোস্টের মধ্যে যোগাযোগ প্রতিষ্ঠার জন্য একটি গুরুত্বপূর্ণ উপাদান। Docker বিভিন্ন ধরনের নেটওয়ার্ক ড্রাইভার প্রদান করে, যার মধ্যে Bridge, Host, এবং Overlay নেটওয়ার্ক অন্যতম। নিচে এই তিন ধরনের নেটওয়ার্কের বর্ণনা এবং ব্যবহার নিয়ে বিস্তারিত আলোচনা করা হলো।
docker run -d --name my-container --network bridge my-app-image
docker run -d --name my-container --network host my-app-image
docker network create -d overlay my-overlay-network
Docker-এ Bridge, Host, এবং Overlay নেটওয়ার্ক তিনটি প্রধান নেটওয়ার্ক ড্রাইভার। Bridge Network স্থানীয় কন্টেইনারগুলোর মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়, Host Network কন্টেইনার এবং হোস্টের মধ্যে সরাসরি সংযোগ প্রতিষ্ঠা করে, এবং Overlay Network মাল্টি-হোস্ট পরিবেশে কন্টেইনারগুলোর মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়। আপনার অ্যাপ্লিকেশন এবং পরিবেশের চাহিদার উপর ভিত্তি করে সঠিক নেটওয়ার্ক ড্রাইভার নির্বাচন করা গুরুত্বপূর্ণ।
Docker-এ একটি Custom Network তৈরি করা এবং সেই নেটওয়ার্কে কনটেইনারগুলোর মধ্যে যোগাযোগ স্থাপন করা একটি গুরুত্বপূর্ণ প্রক্রিয়া। এটি কনটেইনারগুলোর মধ্যে আইসোলেশন এবং নিরাপত্তা নিশ্চিত করে, সেইসাথে নির্দিষ্ট কনটেইনারগুলোর মধ্যে যোগাযোগ সহজতর করে।
Docker CLI ব্যবহার করে একটি Custom Network তৈরি করতে নিচের কমান্ডটি ব্যবহার করুন:
docker network create my-custom-network
বিবরণ: এখানে my-custom-network
হল আপনার নতুন নেটওয়ার্কের নাম। আপনি চাইলে কাস্টম নেটওয়ার্কের জন্য বিভিন্ন বিকল্প যেমন ড্রাইভারও নির্দিষ্ট করতে পারেন। উদাহরণস্বরূপ, একটি ব্রিজ নেটওয়ার্ক তৈরি করতে:
docker network create --driver bridge my-custom-network
নতুন কনটেইনার তৈরি করতে এবং Custom Network-এ সংযুক্ত করতে docker run
কমান্ড ব্যবহার করুন। উদাহরণস্বরূপ:
docker run -d --name container1 --network my-custom-network nginx
docker run -d --name container2 --network my-custom-network redis
বিবরণ: এখানে container1
নামের একটি Nginx কনটেইনার এবং container2
নামের একটি Redis কনটেইনার তৈরি করা হচ্ছে, এবং উভয় কনটেইনারই my-custom-network
নেটওয়ার্কে যুক্ত হচ্ছে।
যেহেতু উভয় কনটেইনার একই Custom Network-এ রয়েছে, সেহেতু তারা একে অপরকে কনটেইনার নাম ব্যবহার করে সংযুক্ত করতে পারে। উদাহরণস্বরূপ, container1
(Nginx) থেকে container2
(Redis) এর সাথে যোগাযোগ করার জন্য:
exec কমান্ড ব্যবহার করে কনটেইনারে প্রবেশ করুন:
docker exec -it container1 /bin/bash
Redis এ সংযোগ স্থাপন করুন:
apt-get update && apt-get install -y redis-tools
redis-cli -h container2
বিবরণ: এখানে redis-cli
ব্যবহার করে container2
কনটেইনারে Redis সার্ভারের সাথে সংযোগ স্থাপন করা হচ্ছে।
কনটেইনারের মধ্যে যোগাযোগ পরীক্ষা করতে, আপনি পিং কমান্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ:
docker exec -it container1 ping container2
বিবরণ: এটি container1
থেকে container2
কনটেইনারে পিং পাঠাবে। যদি সবকিছু ঠিক থাকে, তবে আপনি একটি সফল পিং প্রতিক্রিয়া পাবেন।
Docker-এ Custom Network তৈরি করা এবং কনটেইনারগুলোর মধ্যে যোগাযোগ স্থাপন করা একটি গুরুত্বপূর্ণ প্রক্রিয়া যা কনটেইনারগুলির নিরাপত্তা এবং কার্যকারিতা নিশ্চিত করে। Custom Network তৈরি করতে docker network create
কমান্ড ব্যবহার করা হয়, এবং কনটেইনার তৈরি ও চালানোর সময় --network
ফ্ল্যাগ ব্যবহার করে কনটেইনারগুলিকে সেই নেটওয়ার্কে সংযুক্ত করা হয়। একই নেটওয়ার্কে থাকা কনটেইনারগুলো কনটেইনার নাম ব্যবহার করে সহজেই যোগাযোগ করতে পারে।
Docker Compose হল একটি টুল যা একাধিক Docker কন্টেইনারকে একসাথে পরিচালনা করার জন্য ব্যবহৃত হয়। এটি একটি YAML ফাইল (অর্থাৎ docker-compose.yml
) ব্যবহার করে, যেখানে অ্যাপ্লিকেশনের সমস্ত কন্টেইনারের কনফিগারেশন, নেটওয়ার্কিং, ভলিউম, এবং পরিবেশের সেটিংস উল্লেখ করা হয়। Docker Compose ব্যবহারের মাধ্যমে ডেভেলপাররা সহজেই একাধিক কন্টেইনারের জন্য একটি কোড-বেস তৈরি করতে পারেন এবং একটি অ্যাপ্লিকেশনকে আরও সুসংগঠিতভাবে পরিচালনা করতে পারেন।
বহু-কন্টেইনার ব্যবস্থাপনা: Docker Compose ব্যবহার করে একটি বা একাধিক কন্টেইনার সহজেই পরিচালনা করা যায়। উদাহরণস্বরূপ, একটি অ্যাপ্লিকেশন, একটি ডেটাবেস, এবং একটি ক্যাশ সার্ভার সব কন্টেইনারের মধ্যে একত্রিত করা যায়।
সার্ভিস ডিফিনিশন: Compose ফাইলে প্রতিটি সার্ভিসের জন্য নির্দিষ্ট কনফিগারেশন দেওয়া হয়, যেমন ইমেজ, নেটওয়ার্ক, এবং ভলিউম।
নেটওয়ার্কিং: Docker Compose ডিফল্টভাবে সমস্ত কন্টেইনারগুলিকে একই নেটওয়ার্কে যুক্ত করে, যা তাদের মধ্যে যোগাযোগকে সহজ করে।
পরিবেশের ভেরিয়েবল: পরিবেশ ভেরিয়েবলগুলি ব্যবহারের মাধ্যমে কন্টেইনারগুলির কনফিগারেশন নির্ধারণ করা যায়।
Multi-container Applications হল সেসব অ্যাপ্লিকেশন যা একাধিক কন্টেইনারে চলমান হয়। উদাহরণস্বরূপ, একটি ওয়েব অ্যাপ্লিকেশন, একটি ডেটাবেস, এবং একটি ক্যাশ সার্ভার একই সময়ে চলতে পারে এবং তারা একে অপরের সাথে কাজ করতে পারে।
docker-compose.yml
ফাইল তৈরি করাএকটি docker-compose.yml
ফাইল তৈরি করুন যেখানে আপনার সমস্ত সার্ভিসের কনফিগারেশন উল্লেখ থাকবে। নিচে একটি উদাহরণ দেওয়া হলো:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
networks:
- my-network
db:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: example
networks:
- my-network
cache:
image: redis:latest
networks:
- my-network
networks:
my-network:
Docker Compose অ্যাপ্লিকেশন শুরু করা:
এই কমান্ডটি সমস্ত সার্ভিস চালু করবে এবং লগ দেখতে পারবেন।
docker-compose up
ব্যাকগ্রাউন্ডে চালানো:
-d
ফ্ল্যাগটি ব্যাকগ্রাউন্ডে কন্টেইনারগুলি চালাতে ব্যবহৃত হয়।
docker-compose up -d
কন্টেইনারগুলি বন্ধ করা:
এই কমান্ডটি সমস্ত কন্টেইনার বন্ধ করবে এবং পরিষ্কার করবে।
docker-compose down
কন্টেইনারের লগ দেখতে:
docker-compose logs
একটি নির্দিষ্ট সার্ভিসের লগ দেখতে:
docker-compose logs web
Docker Compose হল একটি শক্তিশালী টুল যা একাধিক কন্টেইনারকে একসাথে পরিচালনা করতে সহায়তা করে। Multi-container Applications তৈরি করতে Docker Compose ব্যবহার করে, আপনি সহজেই আপনার অ্যাপ্লিকেশন এবং তার সমস্ত নির্ভরতাগুলির কনফিগারেশন পরিচালনা করতে পারেন। Docker Compose-এ ব্যবহৃত docker-compose.yml
ফাইলটি আপনার অ্যাপ্লিকেশনকে সংগঠিত এবং পরিচালনা করা সহজ করে তোলে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টের সময় সময় সাশ্রয়ী হয়।